草庐IT

c++ - 从不同线程写入 boost::asio 套接字

全部标签

c - 如何访问符号链接(symbolic link)的 ctime、mtime、...?

在unix上,符号链接(symboliclink)是指向另一个文件的指针。不仅文件而且符号链接(symboliclink)都有ctime、mtime、……。我知道可以访问符号链接(symboliclink)时间,因为ls显示了它。如果我使用ruby​​的File#ctime、File#mtime之一,我总是得到符号链接(symboliclink)指向的文件的属性,而不是符号链接(symboliclink)的属性。我如何在ruby​​中读取这些值?如果这在ruby​​中不可行,请告诉我如何在C中实现。在那种情况下我会编写自己的c扩展。 最佳答案

ruby-on-rails - EventMachine 和 Ruby 线程——这里到底发生了什么?

我们将Rails和EventMachine一起使用,当与Passenger一起使用该组合时,需要进行一些非常具体的设置。经过大量的试验和错误,我让EventMachine初始化工作得很好,但我想更好地理解代码。正如您在下面的代码片段中看到的那样,我们的初始化程序会检查乘客,然后在重新启动EventMachine之前检查它是否是fork进程。ifdefined?(PhusionPassenger)PhusionPassenger.on_event(:starting_worker_process)do|forked|#forpassenger,weneedtoavoidorphanedt

ruby-on-rails - 多线程 rake 任务

我正在编写一个rake任务,它会由Whenever每分钟(将来可能每30秒)调用一次,并且它会联系一个轮询API端点(我们数据库中的每个用户)。显然,这样单线程运行效率不高,但是多线程有可能吗?如果没有,是否有一个好的基于事件的HTTP库可以完成这项工作? 最佳答案 I'mwritingaraketaskthatwouldbecalledeveryminute(possiblyevery30secondsinthefuture)byWhenever注意Rails启动时间,最好使用fork模型,例如Resque或Sidekiq,Res

ruby - 如果它们不是真正的并行,我能给 Ruby 线程什么用?

当我第一次发现线程时,我尝试通过在多个线程中调用sleep来检查它们是否确实按预期工作,而不是正常调用sleep。它奏效了,我很高兴。但后来我的一个friend告诉我,这些线程并不是真正平行的,sleep一定是假装的。所以现在我写了这个测试来做一些真正的处理:classTestITERATIONS=1000defrun_threadsstart=Time.nowt1=Thread.newdodo_iterationsendt2=Thread.newdodo_iterationsendt3=Thread.newdodo_iterationsendt4=Thread.newdodo_ite

ruby-on-rails - Ruby on Rails 不是线程安全的是什么意思?

我刚刚阅读了ROR(还没有深入研究),我听说它不是线程安全的。显然,这并不意味着不止一个人不能同时访问您的网站,那么这到底是什么意思呢?线程在ROR中发挥什么作用?他们只是指请求处理吗? 最佳答案 您的信息已过时。从2.2.2开始它是线程安全的牢记RubyMRI1.8.x,最广泛使用的Ruby实现使用GreenThreads,所以对于1.8.x,如果你创建100个线程,它们都在同一个CPU上运行。因此,当使用MRI托管Rails网站时,您可能希望运行与CPUS一样多的Ruby实例。像passenger这样的东西为你处理这件事。这曾经

ruby - ||= 在 Ruby 线程中安全吗?

不确定线程​​安全是否适用于||=。最初阅读的是ActiveSupport::Memoizable并想知道那里的线程安全性。 最佳答案 关于threadsafetyconceptsinRuby的精彩帖子LucaGuidi表明||=不是线程安全的(至少在MRI中)。 关于ruby-||=在Ruby线程中安全吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/9853086/

ruby-on-rails - FiberError - 跨线程调用的纤程

我正在尝试在使用random-wordgem的Rails应用程序中编写一个小功能生成一个随机名词,然后将其复数。第一次访问开发中的页面时,我已经能够让它工作,但我希望脚本在每次加载页面时再次运行。现在,后续页面加载(直到我反弹服务器)给我WelcomeController#randomwords中的FiberError,fibercalledacrossthreads。我试图自己解决这个问题,但我对编程还很陌生,并不真正了解Fibers的工作原理。我尝试使用Queue,但无法弄清楚如何让它工作,同样是因为我不完全理解该类(class)。我将如何着手解决这个具体问题?来源:welcome

ruby-on-rails - Ruby 中的线程安全枚举器

TLDR:Ruby中是否有Enumerator类的线程安全版本?我正在尝试做的事情:我想在RubyOnRails应用程序中同时运行一个方法。该方法应该创建一个包含站点报告的zip文件,其中zip中的每个文件都是PDF。从html到PDF的转换有点慢,因此需要多线程。我希望如何做到这一点:我想使用5个线程,所以我想我应该在线程之间共享一个枚举器。每个线程都会从枚举器中弹出一个值,然后运行它。这是我认为它会起作用的方式:t=Zip::OutputStream::write_bufferdo|z|mutex=Mutex.newgen=Enumerator.new{|g|Report.all.

ruby - 如何仅使用标准套接字库在 Ruby 中实现 ICMP ping?

应该可以使用Ruby套接字库发送和接收ICMP数据包,但我没有看到任何关于此的好文档。我不想使用net-ping、icmp、ping和所有这些其他库,它们要么因跨平台问题而失败,需要devkit和自定义构建,它们在构建过程中失败,被忽略并且有很长一段时间没有更新,和/或只是一般的错误。有没有人有关于如何完成这个的任何好的文档?我想发送ICMP回显回复,而不是TCP或UDP数据包。 最佳答案 阅读DanielBerger关于他的Net-ping项目的代码,我能够看到他是如何做到的。http://rubygems.org/gems/ne

ruby - Ruby 线程不能在写入时发生冲突吗?

在过去的C#和Java工作中,我习惯于这样的声明不是线程安全的:x+=y;但是,在与Ruby并行运行上述代码时,我未能观察到任何线程间的冲突。我读过Rubyautomaticallypreventsmultiplethreadsfromwritingtothesamedataconcurrently.这是真的?因此+=运算符在Ruby中是线程安全的吗? 最佳答案 好吧,这取决于您的实现和很多事情。在MRI中,有一个GVL(GiantVMLock)这样的东西,它控制哪个线程一次实际执行代码。你看,在MRI中,一次只有一个线程可以执行R